import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import './assets/css/global.css'
import axios from 'axios'
import './plugins/element.js'
import 'element-ui/lib/theme-chalk/index.css';
import Router from 'vue-router'
import echarts from 'echarts'
Vue.prototype.$echarts = echarts

Vue.config.productionTip = false

// 设置反向代理，前端请求默认发送到 http://localhost:8888/
Vue.prototype.$http = axios
axios.defaults.baseURL = 'http://localhost:8088'//设置一个基础请求地址
Vue.prototype.$axios = axios// 全局注册，之后可在其他组件中通过 this.$axios 发送数据

// 并修改vue对象里的内容，使 store 能全局使用
/*new Vue({
  el: '#app',
  router,
  // 注意这里
  store,
  components: { App },
  template: '<App/>'
})*/

new Vue({
  router,
  store,
  render: h => h(App)
}).$mount('#app')

//判断是否需要登录，如果是，判断 store中是否存有token ，是则放行，否则跳转到登录页。
//钩子函数，访问路由前调用
router.beforeEach((to, from, next) => {
      //路由需要认证
      if (to.meta.requireAuth) {
        //判断store里是否有token
        if (store.state.token) {
          next()
        } else {
          next({
            path: 'login',
            query: { redirect: to.fullPath }
          })
        }
      } else {
        next()
      }
    }
)

const routerPush = Router.prototype.push
Router.prototype.push = function push (location) {
    return routerPush.call(this, location).catch(error => error)
}